const http = require("http")
const fs = require("fs")
const url = require("url")
const qs = require("querystring");

http.createServer((req,res)=>{
    if(req.url !== "/favicon.ico"){
        if(req.url.startsWith("/api")){
            apiHrand(req, res);
        }else{
            fileHrand(req, res);
        }
    }
}).listen(3000,()=>{
    console.log("服务器开启成功")
})

// /api/xxxxx

function apiHrand(req, res){
    // 分析
    // 前端会怎么携带数据
        // 在url数据（get），非url数据（post）

    // url数据
    // req.url.split("?")[1].split("&").forEach(val => {
    //    console.log(val.split("=")[0], val.split("=")[1])
    // });
    // console.log(req.url.split("?")[1].split("&"));
    // 利用url模块解析地址栏中携带的query数据
    // let data = url.parse(req.url, true).query;
    // console.log(data.username, data.password)

    // 非url数据
    // console.log(req.url)
    // data事件：数据事件：当后端接收到前端发送的非地址栏数据时，会触发一次data事件
    // end事件：数据传输结束事件：最后一个data事件触发结束后，会触发一次end事件
    let dataObj = null;
    let d = "";
    req.on("data",(s)=>{
        d += s;
    })
    req.on("end",()=>{
        if(d){
            // 非地址栏
            dataObj = qs.parse(d);
        }else{
            // 地址栏
            dataObj = url.parse(req.url, true).query;
        }
        // 前端发送的数据：不分get或post
        console.log(dataObj)
    })
    res.end();
}

// 静态资源的响应
function fileHrand(req, res){
    let path = req.url === "/" ? "/index.html" : req.url;
    fs.readFile("./www" + path, (err,data)=>{
        if(err){
            res.write("404")
        }else{
            res.write(data)
        }
        res.end();
    })
}